import axios from "axios";
import { ElMessage } from 'element-plus'
import router from "../router";
// import pinia from '@/store/storeRegister.js'
import { userinfo } from '../store/index'
// export const baseURL = "http://localhost:8090"
// 106.55.17.82
export const baseURL = "http://106.55.17.82:8090"
const instance = axios.create({
  // timeout:50000,
  baseURL
})   

instance.interceptors.request.use((request) => {
  const userinfoStore =  userinfo()
   // 获取用户信息
   const profile = userinfoStore.profile
   if (profile.token) {
     request.headers.token = profile.token
   }
   return request
}, (error) => {
  return Promise.reject(error)
})
// 响应拦截器
instance.interceptors.response.use((response) => {
  const userinfoStore =  userinfo()
    // 说明token过期
    if (response.data.code === 401) {
      // 清空无效用户信息
      userinfoStore.$patch(statu => {
        statu.profile = {}
      })
      ElMessage.error(response.data.msg)
      router.push({
        path:'login'
      })
      
    }
    if (response.data.code === 500) {
      // 清空无效用户信息
      ElMessage.error("服务器内部错误，请等待！")
      
    }
    //   // // 跳转到登录页
    //   // // 跳转需要传参（当前路由地址）给登录页码
    //   // // router.currentRoute当前路由信息对象相当于，$route。但是在vue3中他是ref响应式的要加.value才能用他的属性
    //   // const fullPath = encodeURIComponent(router.currentRoute.value.fullPath)
    //   // router.push('/login?redirectUrl=' + fullPath)
    // }
  return response.data
}, (error) => {
  ElMessage.error("服务器内部错误，请等待！")
  return Promise.reject(error)
})
export default (url, method, submitData) => {
  // 负责发请求：请求地址，请求方式，提交的数据
  return instance({
    url,
    method,
    // 1. 如果是get请求  需要使用params来传递submitData   ?a=10&c=10
    // 2. 如果不是get请求  需要使用data来传递submitData   请求体传参
    // [] 设置一个动态的key, 写js表达式，js表达式的执行结果当作KEY
    // method参数：get,Get,GET  转换成小写再来判断
    // 在对象，['params']:submitData ===== params:submitData 这样理解
    [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData
  })
} 